home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1994 March / Internet Info CD-ROM (Walnut Creek) (March 1994).iso / networking / ip / ka9q / alpha.arc / ARPDUMP.C < prev    next >
C/C++ Source or Header  |  1988-02-14  |  1KB  |  58 lines

  1. #include <stdio.h>
  2. #include "global.h"
  3. #include "mbuf.h"
  4. #include "timer.h"
  5. #include "arp.h"
  6.  
  7. arp_dump(bpp)
  8. struct mbuf **bpp;
  9. {
  10.     struct arp arp;
  11.     char *inet_ntoa();
  12.     struct arp_type *at;
  13.     int is_ip = 0;
  14.  
  15.     if(bpp == NULLBUFP || *bpp == NULLBUF)
  16.         return;
  17.     printf("ARP: len %d",len_mbuf(*bpp));
  18.     if(ntoharp(&arp,bpp) == -1){
  19.         printf(" bad packet\n");
  20.         return;
  21.     }
  22.     /* Print hardware type in Ascii if known, numerically if not */
  23.     if(arp.hardware < NHWTYPES){
  24.         at = &arp_type[arp.hardware];
  25.         printf(" hwtype %s",arptypes[arp.hardware]);
  26.     } else {
  27.         at = NULLATYPE;
  28.         printf(" hwtype %u",arp.hardware);
  29.     }
  30.     /* Print hardware length only if unknown type, or if it doesn't match
  31.      * the length in the known types table
  32.      */
  33.     if(at == NULLATYPE || arp.hwalen != at->hwalen)
  34.         printf(" hwlen %u",arp.hwalen);
  35.  
  36.     /* Check for most common case -- upper level protocol is IP */
  37.     if(at != NULLATYPE && arp.protocol == at->iptype){
  38.         printf(" prot IP");
  39.         is_ip = 1;
  40.     } else {
  41.         printf(" prot 0x%x prlen %u",arp.protocol,arp.pralen);
  42.     }
  43.     switch(arp.opcode){
  44.     case ARP_REQUEST:
  45.         printf(" op REQUEST");
  46.         break;
  47.     case ARP_REPLY:
  48.         printf(" op REPLY");
  49.         break;
  50.     default:
  51.         printf(" op %u",arp.opcode);
  52.         break;
  53.     }
  54.     if(is_ip)
  55.         printf(" target %s",inet_ntoa(arp.tprotaddr));
  56.     printf("\n");
  57. }
  58.